################################################################################ 
#
# The distribution of hate speech and its implications for content moderation
# PSRM - Replication package
# Table E10
#
################################################################################ 


################################################################################ 
#  LIBRARIES
################################################################################ 

library(dplyr)
library(estimatr)
library(broom)
library(writexl)

rm(list = setdiff(ls(), ls(pattern = "^wd|^setsave$")))

################################################################################ 
#   DATA AND FOLDER
################################################################################ 

data = read.csv(paste0(wd_data_processed, '/for_analysis/clean_for_analysis.csv'))


################################################################################ 
#   VARIABLES
################################################################################

controls = c("user_anonymity", "age", "followers_count", "friends_count",
             "no_hate_tweets_pre_daily", 'no_tweets_pre_daily')        

################################################################################ 
#   Scale variables
################################################################################ 

data[c(controls)] = lapply(data[c(controls)], scale)


################################################################################ 
#   Run the models on the full time period
################################################################################ 

MODELS = list()

data$treat_aggregate = factor(data$treat_aggregate, levels = c("control",  "alert", "consequences", "empathy"))

for (var in controls) {
  formula = as.formula(paste(var, "~ treat_aggregate"))
  MODELS[[var]] = lm_robust(formula, data = data, se_type = "HC3")
}


################################################################################ 
#   Save results in a container
################################################################################ 

tidy_models = lapply(MODELS, function(model) {
  
  tidy_df = tidy(model, conf.int = TRUE)
  glance_df = glance(model)
  
  r2 = glance_df$r.squared
  nobs = glance_df$nobs

  tidy_df$r.squared = round(r2, 3)
  tidy_df$nobs = nobs
  
  tidy_df[, 2:7] = round(tidy_df[, 2:7], 3)
  return(tidy_df)
})


write_xlsx(tidy_models, path = paste0(wd_res, "/tables/tabE10.xls"))

cat("\n====================\n")
cat("Saved Table E10")
cat("\n====================\n")

